resource "aws_autoscaling_group"
GPT-4.icon
Auto Scaling Group(ASG)は、EC2 インスタンスの台数を自動で増減させる仕組みで、
負荷状況やスケジュールに応じてインスタンスをスケールイン / スケールアウトできます。
✅ 基本イメージ
code:text
├─ 最小: 2台
├─ 最大: 5台
├─ 現在: 3台
└─ スケーリングポリシーに応じてインスタンス台数を動的に調整
🎯 主な用途
サーバの台数を負荷に応じて 自動調整
高可用性・コスト最適化を実現
メンテナンス不要のスケール設計が可能
🔍 基本構造
code:hcl(rb)
resource "aws_autoscaling_group" "example" {
name = "example-asg"
min_size = 2
max_size = 5
desired_capacity = 2
launch_template {
id = aws_launch_template.example.id
version = "$Latest"
}
health_check_type = "EC2"
health_check_grace_period = 300
tag {
key = "Name"
value = "example-instance"
propagate_at_launch = true
}
}
🎯 主なパラメータ
table:_
パラメータ 説明
name Auto Scaling Group の名前
min_size 最小インスタンス数
max_size 最大インスタンス数
desired_capacity 起動時の希望インスタンス数
vpc_zone_identifier 配置するサブネットの ID リスト
launch_template EC2 起動時のテンプレート(詳細は後述)
health_check_type EC2 or ELB を選択(EC2 の死活 or ELB 経由の死活監視)
tag 起動インスタンスに付与するタグ
🚀 インスタンス起動設定
ASG で起動する EC2 の設定は
launch_template(推奨)
launch_configuration(古い方式)
のどちらかで指定します。
code:hcl(rb)
launch_template {
id = aws_launch_template.example.id
version = "$Latest"
}
※ 最近は launch_template が標準です。
⚙️ ヘルスチェックの選択
table:_
タイプ 説明
EC2 EC2 インスタンスのステータスで判定
ELB Elastic Load Balancer のヘルスチェック結果で判定
🔄 スケーリングポリシー(例)
code:hcl(rb)
resource "aws_autoscaling_policy" "scale_out" {
name = "scale-out"
autoscaling_group_name = aws_autoscaling_group.example.name
scaling_adjustment = 1
adjustment_type = "ChangeInCapacity"
cooldown = 300
}
※ これは CloudWatch アラームと連携して、自動スケーリングさせる設定です。
✅ Auto Scaling Group の仕組みまとめ
table:_
構成要素 役割
Auto Scaling Group インスタンスのグループと台数管理
Launch Template インスタンスの起動設定(AMI、インスタンスタイプ、セキュリティグループなど)
Scaling Policy スケールイン・スケールアウトの条件
CloudWatch Alarm 負荷状況を監視し、スケーリングポリシーを発火
🔥 よくある構成パターン
ALB + ASG 組み合わせ
CloudWatch Metrics(CPU 使用率など)でスケール連動
複数 AZ 配置で高可用性構成
起動時に User Data でアプリケーションのセットアップ